function ArrayEncoder(non_array) {
	
	this.non_array = non_array;
	
	this.encode = function(t, o) {
		if(t.isArray()) {
			if(o == null) return Types.NULL_TOKEN;
			
			var output = "";
				
			output += Types.ARRAY_START;
				
			for(var i = 0; i < o.length; i++) {
				if(i > 0) output += Types.ARRAY_SPLITTER;
				output += this.encode(t.subtype(), o[i]);
			}
				
			output += Types.ARRAY_END;
			
			return output;
		}
		return this.non_array.encode(t, o);
	}

	this.isEncodeable = function(t) {
		return (t.isArray() && this.isEncodeable(t.subtype())) || this.non_array.isEncodeable(t);
	}

}
